﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using model;
using negocio.Util;
using System.Data.Objects;
namespace negocio
{
    public class UsuarioBO
    {
        public int insertar(USUARIO usuario)
        {
            ContextoTienda contexto = new ContextoTienda();
            int id = -1;

            contexto.AddToUSUARIO(usuario);
            int resta = contexto.SaveChanges();
            id = (int)contexto.USUARIO.OrderByDescending(U => U.USU_ID).First().USU_ID;
            contexto.Dispose();

            return id;
        }

        public PERSONA autenticar(USUARIO usuario)
        {
            ContextoTienda contexto = new ContextoTienda();

            PERSONA persona = (from P in contexto.PERSONA
                               join U in contexto.USUARIO on P.PER_ID equals U.PER_ID
                               select P
                             ).Where(U => U.USUARIO.FirstOrDefault().USU_LOGIN == usuario.USU_LOGIN && U.USUARIO.FirstOrDefault().USU_PASSWORD == usuario.USU_PASSWORD).FirstOrDefault();
            contexto.Dispose();

            return persona;
            //ContextoTienda contexto = new ContextoTienda();
            //ObjectParameter respuesta = new ObjectParameter("v_valido", 0);
            //contexto.PROC_CALCULAREDAD(usuario.USU_LOGIN, usuario.USU_PASSWORD, respuesta);

            //if (int.Parse(respuesta.Value.ToString()) == -1)
            //    return null;
            //else
            //{
            //    return contexto.PERSONA.Where(P => P.PER_ID == decimal.Parse(respuesta.Value.ToString()) ).SingleOrDefault();
            //}
        }

        public decimal obtenerCalificacion(decimal idPersona)
        {
            ContextoTienda contexto = new ContextoTienda();
            CLIENTE cliente = contexto.CLIENTE.Where(C => C.PER_ID == idPersona).FirstOrDefault();
            contexto.Dispose();

            return cliente.CLI_CALIFICACION;
        }
        public decimal obtenerTipoUsuario(String login)
        {
            ContextoTienda contexto = new ContextoTienda();
            USUARIO usuario = contexto.USUARIO.Where(U => U.USU_LOGIN == login).FirstOrDefault();
            contexto.Dispose();

            return usuario.USU_TIPO;
        }


        public decimal obtenerEdad()
        {
            ContextoTienda contexto = new ContextoTienda();
            ObjectParameter edad=new ObjectParameter("v_EDAD",0);
            contexto.PROC_CALCULAREDAD(UsuarioSession.getInstance().persona.PER_FECHANAC, edad);
            return decimal.Parse(edad.Value.ToString());
        }
    }
}
